Para usuarios de Windows y Mac OS: entorno de desarrollo con Docker y Visual Studio Code
Este documento es un manual breve destinado a los usuarios de los sistemas operativos Windows y Mac OS, que describe cómo configurar el entorno de desarrollo utilizando Visual Studio Code, Docker y la extensión Dev-Containers. Los usuarios de GNU/Linux no necesitan usar contenedores en esta asignatura.
Para comenzar, necesitamos instalar Docker Desktop en nuestro sistema:
Nota para usuarios de MS Windows: Al iniciar Docker Desktop, es posible que se muestren avisos importantes. Para solucionarlos:
wsl --install wsl --update
A continuación, se muestra una captura de pantalla de Docker instalándose:
Y otra captura con Docker en funcionamiento:
Continuamos instalando Visual Studio Code:
Para que VSCode funcione contra un contenedor debemos tener una carpeta de proyecto con la siguiente estructura:
proyecto
.devcontainer
Dockerfile
devcontainer.json
La estructura de directorio mencionada anteriormente, junto con los archivos Dockerfile y devcontainer.json, así como un archivo de código .c de prueba, se proporcionan en el archivo comprimido entorno-vscode-docker.tar.gz.
Si abrimos un proyecto con una carpeta .devcontainer y el complemento Dev Containers está instalado, pueden ocurrir varias situaciones:
Dev Containers
La recomendación, si trabajamos en un sistema mixto, es no copiar la carpeta .devcontainer al pasar los archivos de Windows/Mac OS a GNU/Linux.
Una vez que tengamos la estructura completa de la carpeta de trabajo proyecto, junto con su carpeta .devcontainer, procedemos de la siguiente manera:
workspaces/proyecto
A continuación, se muestra una captura de pantalla de Visual Studio Code creando el contenedor:
Ahora que estamos configurados y conectados al contenedor, podemos comenzar a desarrollar, compilar y ejecutar nuestros programas:
hello.c
Terminal
New Terminal
gcc -o hello hello.c ./hello
Hello World!
A continuación, se muestra una captura de pantalla de Visual Studio Code ejecutando el programa hello:
hello
La documentación completa para cada sistema operativo se puede encontrar en las siguientes fuentes:
En algunas ocasiones, puede resultar más práctico trabajar exclusivamente dentro del contenedor. Para hacerlo, se proporcionan a continuación algunos comandos que pueden ser de utilidad. Para ejecutar estos comandos, es necesario contar con privilegios de administrador. En sistemas GNU/Linux, esto implica agregar sudo al principio de cada comando o asegurarse de que el usuario pertenezca al grupo docker:
sudo usermod -aG docker $USER
A continuación, se presentan los comandos más comunes:
docker build -t nombre_de_la_imagen - < Dockerfile
docker run [--name nombre_del_contenedor] -it nombre_de_la_imagen
docker run -v /ruta/del/host:/ruta/en/el/contenedor [--name nombre_del_contenedor] -it nombre_de_la_imagen
docker start -ai nombre_del_contenedor
docker ps -a
docker images -a
docker rm nombre_del_contenedor
docker rmi nombre_de_la_imagen
docker cp ruta_del_archivo_local nombre_del_contenedor:ruta_del_archivo_en_el_contenedor